<?php
/**
 * 模版Factory
 * @author konakona
 * @date 2009/6/15
 * @version 1.0.0
 * @package libs
 */
class template {
    public static $style = '';
    /**
     * 获取模板object
     **/
    public static function get() {
        static $obj = null;
        if(empty(self::$style)){self::$style=k::$config['DEFAULT_STYLE'];}
        if($obj==null) {
            k::import( 'plugin.Smarty' );
            $obj = new Smarty();
            $obj->compile_dir = k::$ROOT.k::$config['SMARTY_DATA'] . k::$DS . 'templates_c';
            $obj->config_dir = k::$ROOT.k::$config['CONF_DIR'];
            $obj->cache_dir = k::$ROOT.k::$config['CACHE_DIR'];
			$obj->left_delimiter = '_{';
        }
        return $obj;
    }
    /**
     * 设置风格包名
     * @param string $styleName
     */
    public static function setStyle($styleName) {
        self::$style = $styleName;
    }
    /**
     * assign
     * @param string $name
     * @param mixed $value
     */
    public static function assign($name,$value) {
        self::get()->assign($name,$value);//因為get返回的是smarty對象，所以assign相當於smarty->assign()
    }
	/**
     * register_function
     * @param string $smarty_func
     * @param mixed $php_func
     */
	public static function register_function($smarty_func,$php_func){
		self::get()->register_function($smarty_func,$php_func);
	}
    /**
     * 显示模板
     * @param string $file 模板文件名
     */
    public static function display($file=false) {
		template::templatePath();
        echo self::fetch($file);
    }
    /**
     * 获取模板解析结果
     * @param string $file 模板文件名
     */
    public static function fetch($file=false) {
        $dir = dirname($_SERVER['SCRIPT_FILENAME']).k::$DS.'templates'.k::$DS.self::$style.k::$DS;
        if($file===false) { $file = substr($_SERVER['SCRIPT_FILENAME'] , strrpos($_SERVER['SCRIPT_FILENAME'],'/')+1).'.tpl'; }
        $dir = self::template_exists($dir.$file) ? $dir : k::$ROOT.'../'.k::$config['TEMPLATES_DIR'].k::$DS.self::$style.k::$DS;
        return self::get()->fetch($dir.$file);
    }
    /**
     * 检测模板文件是否存在
     * @param string $fileName 模板文件名
     */
    public static function template_exists($fileName) {
        return self::get()->template_exists($fileName);
    }
	public static function templatePath(){
		$path = k::$config['WEB_URL'].k::$config['TEMPLATES_DIR'].'/'.k::$config['DEFAULT_STYLE'].'/';
		self::get()->assign('base',$path);
	}
	public static function adminTemplatePath(){
		$path = k::$config['WEB_URL'].k::$config['TEMPLATES_DIR'].'/admin/';
		self::get()->assign('adminbase',$path);
	}
}
?>
